# Making of the Installbox ISO

This is how the ISO for the installbox can be created on a Debian host system.

```shell
su -
apt install -y bsdtar genisoimage syslinux-utils
cd ~
rm -rf iso
mkdir iso
wget http://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/archive/10.0.0+nonfree/amd64/iso-cd/firmware-10.0.0-amd64-netinst.iso
bsdtar -C iso -xf firmware-10.0.0-amd64-netinst.iso
```

### For Legacy Systems

Edit iso/isolinux/txt.cfg. Change the keyboard layout reflecting your hardware. If you have forked the repository, please make sure to adopt the path to the preseed file accordingly. 

```diff
-         append vga=788 initrd=/install.amd/initrd.gz --- quiet
+        append vga=788 initrd=/install.amd/initrd.gz url=https://notabug.org/LiohMoeller/installbox/raw/master/preseed.cfg locale=en_US.UTF-8 keyboard-configuration/xkb-keymap=ch ipv6.disable=1 debconf_debug=5 netcfg/get_domain=domain.example netcfg/dhcp_timeout=60 biosdevname=0 net.ifnames=0 netcfg/get_hostname=installbox --- quiet
```

Edit iso/isolinux/gtk.cfg. Same here. Adopt if you have forked the repository.

```diff
-         append vga=788 initrd=/install.amd/gtk/initrd.gz --- quiet
+        append vga=788 initrd=/install.amd/gtk/initrd.gz url=https://notabug.org/LiohMoeller/installbox/raw/master/preseed.cfg locale=en_US.UTF-8 keyboard-configuration/xkb-keymap=ch ipv6.disable=1 debconf_debug=5 netcfg/get_domain=domain.example netcfg/dhcp_timeout=60 biosdevname=0 net.ifnames=0 netcfg/get_hostname=installbox --- quiet
```

### For UEFI Systems

Edit iso/boot/grub/grub.cfg and change the following line in the `Install` menu entry. Change the keyboard layout reflecting your hardware. If you have forked the repository, please make sure to adopt the path to the preseed file accordingly. 

```diff
-         linux    /install.amd/vmlinuz vga=788 --- quiet
+        linux    /install.amd/vmlinuz vga=788 initrd=/install.amd/initrd.gz url=https://notabug.org/LiohMoeller/installbox/raw/master/preseed.cfg locale=en_US.UTF-8 keyboard-configuration/xkb-keymap=ch ipv6.disable=1 debconf_debug=5 netcfg/get_domain=domain.example netcfg/dhcp_timeout=60 biosdevname=0 net.ifnames=0 netcfg/get_hostname=installbox --- quiet
```

<br>

```shell
cd iso; md5sum `find ! -name "md5sum.txt" ! -path "./isolinux/*" -follow -type f` > md5sum.txt; cd ..
genisoimage -o debian-installbox-amd64.iso -r -J -no-emul-boot -boot-load-size 4 -boot-info-table -b isolinux/isolinux.bin -c isolinux/boot.cat ./iso
isohybrid debian-installbox-amd64.iso
```

If you are working on a fork, change the git url at the end of the preseed.cfg file. The puppet folder also contains a script within modules/puppet/files called applypuppet. This script has the same content as applypuppet.txt in the git root. Modify the git url to point to your forked repository.
